package fr.uparis10.miage.m1p1.employes;

import java.util.ArrayList;
import java.util.Date;
import java.util.Iterator;

import fr.uparis10.miage.m1p1.core.Employe;
import fr.uparis10.miage.m1p1.core.Projet;

public class TechnicoCommercial extends Employe {
	private ArrayList<Projet> listeProjets = new ArrayList<Projet>();;
	private double chiffreAffaires = 0;

	/* Constructors - START */
	/**
	 * Constructeur par d�faut. Allocation du portefeuille de projets.
	 */
	public TechnicoCommercial() {
		super();
	}

	public TechnicoCommercial(int preferedEmplId, long preferedNumSS) {
		super(preferedEmplId, preferedNumSS);
	}

	public TechnicoCommercial(int preferedEmplId, long preferedNumSS,
			Date joinDate) {
		super(preferedEmplId, preferedNumSS, joinDate);
	}

	/* Constructors - END */

	/**
	 * Permet de calculer le chiffre d'affaires du portefeuille.
	 */
	public void calcCA() {
		double cA_temp = 0;
		Iterator<Projet> iter = listeProjets.iterator();
		for (Projet p = null; iter.hasNext();) {
			p = iter.next();
			cA_temp += p.getChiffreAffaire();
		}
		this.chiffreAffaires = cA_temp;
	}

	/**
	 * Permet d'avoir le chiffre d'affaires r�alis�.
	 */
	public double getCA() {
		return chiffreAffaires;
	}

	/**
	 * Ajouter un projet dans le portefeuille.
	 * 
	 * @param p
	 */
	public void ajouterProjet(Projet p) {
		this.listeProjets.add(p);
		// well, the Project "wants" to know the list of his employees
		p.addEmploye(this);
	}

	/**
	 * Supprimer un projet du portefeuille.
	 * 
	 * @param p
	 */
	public void supprimerProjet(Projet p) {
		this.listeProjets.remove(p);
		// end of work for this project
		p.removeEmploye(this);
	}

	/**
	 * Permet de calculer le bonus de salaire.
	 */
	@Override
	public int calcBonus() {
		double bonusRate;
		switch (indice) {
		case A:
			bonusRate = 0.11;
			break;
		case B:
			bonusRate = 0.06;
			break;
		default:
			bonusRate = 0;
		}
		double bonus = salaire * bonusRate;
		return (int) bonus;
	}
}